from django.shortcuts import render, HttpResponse
from django.views.generic import View, ListView
from .models import Article


class Index(View):
    def get(self, request, *args, **kwargs):
        articles = []
        for i in range(1, 103):
            article = Article(title='标题%s' % i, content='内容%s' % i)
            articles.append(article)
        Article.objects.bulk_create(articles)
        return HttpResponse('success')


class ArtcileList(ListView):
    # 1.model：重写model类属性，指定这个列表是给哪个模型的
    model = Article
    # 2.template_name：指定这个列表的模板
    template_name = 'article_list_1.html'
    # 3.paginate_by：指定这个列表一页中展示多少条数据
    paginate_by = 10
    # 4.context_object_name：指定这个列表模型在模板中的参数名称
    context_object_name = 'articles'
    # 5.ordering：指定这个列表的排序方式
    ordering = 'create_time'
    # 6.page_kwarg：获取第几页的数据的参数名称。默认是page
    page_kwarg = 'page'

    # 7.get_context_data：获取上下文的数据
    def get_context_data(self, **kwargs):
        context = super(ArtcileList, self).get_context_data(**kwargs)
        context.update({
            'username': 'zhiliao'
        })
        # # 1.Paginator常用属性和方法
        # paginator = context.get('paginator')
        # print('paginator..............')
        # # 1.1 count: 总共有多少条数据
        # print('count：', paginator.count)
        # # 1.2 nun_pages: 总共有多少页
        # print('total_page：', paginator.num_pages)
        # # 1.3 page_range：页面的区间。比如有三页，那么就range(1,4)
        # print('page_range：', paginator.page_range)
        #
        # # 2.page常用属性和方法
        # print('page..............')
        # page = context.get('page_obj')
        # # 2.1 has_next: 是否还有下一页
        # print('has_next：', page.has_next())
        # # 2.2 has_previous：是否还有上一页
        # print('has_previous：', page.has_previous())
        # # 2.3 next_page_number：下一页的页码
        # print('next_page_number：', page.next_page_number())
        # # 2.4 previous_page_number：上一页的页码
        # print('previous_page_number：', page.previous_page_number())
        # # 2.5 number：当前页
        # print('number：', page.number)
        # # 2.6 start_index：当前这一页的第一条数据的索引值
        # print('start_index：', page.start_index())
        # # 2.7 end_index：当前这一页的最后一条数据的索引值
        # print('end_index：', page.end_index())
        return context

    # 8.如果你提取数据的时候，并不是要把所有数据都返回，那么你可以重写这个方法.
    # 将一些不需要展示的数据给过滤掉。
    # def get_queryset(self):
    #     return Article.objects.filter(id__lte=9)